Threading Bulding Blocks (TBB) to biblioteka szablonw rozwijana przez firm Intel w celu zaoferowania programistom C++ bardziej intuicyjnego podejcia do programowania rwnolegego i uatwienia tworzenia oprogramowania wykorzystujcego wielordzeniowe procesory. W jej skad wchodz szablony algorytmw implementujce najczciej stosowane schematy w programowaniu rwnolegym oraz szablony struktur danych zapewniajce bezpieczne dziaanie w aplikacjach wielowtkowych. W bibliotece nie zabrako rwnie niskopoziomowych funkcji implementujcych muteksy oraz operacje atomowe, chocia uycia tych ostatnich przy umiejtnym stosowaniu oferowanych algorytmw mona cakowicie unikn.
Zastosowanie w bibliotece programowania uoglnionego z szablonami umoliwia dostosowanie gotowych algorytmw do naszych potrzeb. Dodatkowo biblioteka odsuwa od programisty problemy zwizane z niskopoziomow obsug wtkw, oferujc bardziej abstrakcyjne podejcie do problemw. Zadanie programisty sprowadza si do zdefiniowania zadania oraz przestrzeni danych, na jakich operuje algorytm realizujcy to zadanie. W najprostszym przypadku tak przestrzeni moe by jednowymiarowa tablica liczb, a algorytm, jaki chcemy zastosowa na danych, moe np. suy do policzenia, ile spord tych liczb jest liczbami pierwszymi. Nie jestemy tutaj ograniczeni do reprezentowania przestrzeni danych przez typy wbudowane w jzyk C++. Rwnie dobrze nasza przestrze moe skada si ze zdefiniowanych przez nas obiektw.
Kluczow rol w dziaaniu biblioteki odgrywa zaimplementowany w niej mechanizm planisty. W przeciwiestwie do metod zrwnoleglenia, jakie oferuje OpenMP lub MPI, w ktrych kontrola nad podziaem pracy na poszczeglne wtki jak i ich ilo zale w duej mierze od programisty, tu zadanie to moe w caoci zosta przejte przez bibliotek. Mechanizm planisty sam zdecyduje, ile wtkw utworzy i jak pomidzy nie rozdzieli obcienie zadaniem obliczeniowym. Decyzja jest podejmowana po uwzgldnieniu liczby rdzeni oraz ich obcienia przez inne zadania systemowe. W znaczcy sposb wpywa to na skalowalno programw z tego korzystajcych. 
Threading Bulding Blocks zostao stworzone, aby zrwnolegla zadania intensywne obliczeniowo. Biblioteka przy przydzielaniu rdzeni wtkom realizujcym fragmenty zadania kieruje si zasad, e w przypadku takiego rodzaju zada optymalne jest uruchamianie jednego wtku na jednym rdzeniu. Zadania wykorzystujce np. operacje dyskowe nie nadaj si najlepiej do tego, poniewa wtek realizujcy tak operacj znaczn cz swojego czasu spdza bezczynnie, oczekujc na wczytanie lub zapis danych z wolniejszej pamici dyskowej, a tym samym blokujc zarezerwowany na to rdze. Naley o tym pamita przy tworzeniu zada.
Prawdziw przewag TBB nad pokrewnymi technologiami wida w momencie, gdy program realizuje zadanie, ktrego czas wykonywania nie zaley w prosty sposb od iloci danych. W przypadku, gdy nie jestemy w stanie przewidzie, jak dugo bdzie przetwarzana kada z czci danych, najprostsze podejcie podzielenia jej na rwne fragmenty realizowane na oddzielnych rdzeniach zawodzi. Kosztowna obliczeniowo cz danych bdzie zajmowa przeznaczony jej rdze nawet wtedy, gdy inne czci zostay ju przetworzone i zwolniy przeznaczone im zasoby. Planista TBB radzi sobie z tym, wykorzystujc technik work stealing, ktra polega na przenoszeniu czci wykonywanych zada (jeeli tylko da si je podzieli) na bezczynne rdzenie. Dziki temu mamy pewno, e wykorzystywane s wszystkie dostpne zasoby.
W kocu nic nie stoi na przeszkodzie, aby biblioteka ta moga by zastosowana rwnoczenie z innymi technikami zrwnoleglenia, jak OpenMP czy natywne wtki w systemie Windows.
